// Créé avec XmlCppClassGenerator version 2.0 beta.

#include "ConstruitRepresentationContrat.hpp"

#include "TraitementRequete.hpp"

#include "StructureDonnees.hpp"

ConstruitRepresentationContrat::ConstruitRepresentationContrat( const QString& agence,
                                                                const QString& mdp,
                                                                const QString& contenu,
                                                                QObject* parent )
 : BaseConstruitRepresentation( agence, mdp, contenu, parent ),
   InfosContrats( )
{}

ConstruitRepresentationContrat::~ConstruitRepresentationContrat()
{}

void ConstruitRepresentationContrat::chargeInformations( const QString& )
{
    if ( RecuperateurContenu != 0 )
      {
        delete RecuperateurContenu;
        RecuperateurContenu = 0;
      }
    RecuperateurContenu = new TraitementRequete( Contenu, Agence, MotDePasse,
                                                 this );

    connect( RecuperateurContenu,
             SIGNAL( envoieTexte( const StructureDonnees* ) ),
             this, SLOT( construitInfoInstance( const StructureDonnees* ) ) );
}

const QHash< unsigned, XmlInfoContrat* >& ConstruitRepresentationContrat::infosContrats() const
{
 return InfosContrats;
}


const QHash< unsigned, XmlInfoContrat* >* ConstruitRepresentationContrat::infosContratsPtr() const
{
 return &InfosContrats;
}


void ConstruitRepresentationContrat::construitInfoInstance( const StructureDonnees* info )
{
    construitInfoContrats( info );
}

void ConstruitRepresentationContrat::construitInfoContrats( const StructureDonnees* info )
{
    if ( ! InfosContrats.empty() )
    {
        qDeleteAll( InfosContrats.begin(), InfosContrats.end() );
        InfosContrats.clear();
    }

    int nbrContrats( info -> nombreElements( "contract" ) ), i;

    const QHash< QString, QString >* hashInfos;
    XmlInfoContrat * contrat;

    for ( i = 0; i < nbrContrats; i++ )
    {
        hashInfos = info -> listeAttributs( "contract", i );
        contrat = new XmlInfoContrat( XmlInfoContrat::creeInstance( Contenu, hashInfos ) );
        InfosContrats.insert( contrat -> identification(), contrat );
    }

    emit( infosPretes() );
}

